package com.hongji.lms5xxcommunicator.grid.volume;

import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * <p>体积计算参数配置类。</p>
 *
 * <p><b>职责：</b></p>
 * <ul>
 *   <li>保存体积计算所需参数：基准面高度（baseline）、是否截断负值（clampNegative）。</li>
 *   <li>这些参数会被 {@link VolumeService} 使用，直接影响单元格体积贡献的计算。</li>
 * </ul>
 *
 * <p><b>参数说明：</b></p>
 * <ul>
 *   <li>{@link #baseline}：基准面高度，计算体积时使用 <code>dz = meanZ - baseline</code>。</li>
 *   <li>{@link #clampNegative}：若为 <code>true</code>，则当 <code>dz &lt; 0</code> 时截断为 0（忽略负贡献）。</li>
 * </ul>
 *
 * <p><b>用法：</b></p>
 * <ol>
 *   <li>构造实例：{@link #VolumeParams()}。</li>
 *   <li>可链式调用：{@link #setBaseline(double)}、{@link #setClampNegative(boolean)}。</li>
 *   <li>将配置传入 {@link VolumeService} 进行体积计算。</li>
 * </ol>
 *
 * @since 1.0
 */
@Getter
@Setter
@Accessors(chain = true) // 允许链式调用：params.setBaseline(...).setClampNegative(...)
public class VolumeParams {

    private static final Logger log = LoggerFactory.getLogger(VolumeParams.class);

    /** 基准面高度（内部单位，默认 0.0） */
    private double baseline = 0.0;

    /** 是否截断负贡献（默认 true） */
    private boolean clampNegative = true;

    /** 默认构造，baseline=0.0，clampNegative=true。 */
    public VolumeParams() {
        log.debug("初始化 VolumeParams：baseline={}，clampNegative={}", baseline, clampNegative);
    }

    /** Lombok 会生成 getBaseline()/setBaseline()/isClampNegative()/setClampNegative() */

    @Override
    public String toString() {
        return "VolumeParams{" +
                "baseline=" + baseline +
                ", clampNegative=" + clampNegative +
                '}';
    }
}
